//Definiere Pi
#define PI 3.1415

varying vec3 view_port;
varying vec3 normal;

uniform sampler2D my_color_texture;

/**
 * Fragment shader used for texture mapping.
 */
void main()
{
	
	vec3 reflection = normalize(reflect(view_port, normal));
    
    //Berechnung der Texturkoordinaten U und V. Formeln wie in den Folien zur
    //berechnung des Kugel Mappings
    float u = (PI + atan(reflection.y, reflection.x)) / (2.0 * PI);
    float v = (atan(sqrt((reflection.x * reflection.x) + 
    			(reflection.y * reflection.y)), reflection.z)) / PI;
    
    //Texturkoordinaten
    vec2 texture_coordinate = vec2(u,v);
    
    //berechne anhand der Textur die Farbe des Pixels
    gl_FragColor = texture2D(my_color_texture, texture_coordinate);
}